#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include"src/variables.h"
#include"src/fonctions.h"
#include"src/time_treatement.h"
#include"src/readers_log.h"
#include"src/log_prep.h"

int main (int argc, char ** argv)
{	
	FILE * file;
	file=fopen("src/tmp/tmp_file", "w+");
	if (file==NULL)
	{
		printf ("ERROR : fopen : src/tmp/tmp_file\n");
		exit(EXIT_FAILURE);
	}

	//c'est la copie que nous allons crée, 
	//contiendra les information qui nous ai necessaire!
	FILE * stream_des;
	stream_des=fopen("src/logs/log_live", "w+");
	if (stream_des==NULL)
	{
		printf ("ERROR : fopen : src/logs/log_live\n");
		exit(EXIT_FAILURE);
	}

	//le log quotidien que nous allons just lire, 
	//c'est notre source (à exploiter)
	FILE * stream_src;
	stream_src=fopen("src/logs/log_file", "r+");
	if (stream_src==NULL)
	{
		printf ("ERROR : fopen : src/logs/log_file\n");
		exit(EXIT_FAILURE);
	}

	/********************************************************
	 *             La préparation du log_live               *
	 *                     sur lequel                       *
	 *                  nous travaillerons                  *
	 ********************************************************/
	copy_log (stream_src, stream_des, 600);  //10min*60=600 sec 
	//deplacement de la tête de lectur au point départ
	fseek(stream_des, 0, SEEK_SET);
	//fermeture de la source !
	fclose (stream_src);
	//creation de notre buffer de stokage des lignes lu
	char * buffer=(char*)calloc(800, sizeof(char));

	//creation+init: structure sur laquelle nous travaillerons
	data * machine=(data*)malloc(sizeof(data));
	initialization_struct(machine);

	//tester while '<' n'existe pas => soit ligne "fgets"
	/*je suis ici :
	 * Soit j'ai trouvé => rentrer dans le do while.
	 * Soit fin de fichier => afficher message fin fichier !.
	 */
	do
	{
		//stockage des lignes dans le buffer
		fgets(buffer,800,stream_des);
		/*detection du début d'une information (un packet)*/
		if (buffer[0]=='<')
		{
/*********************Explication Algorithmique*****************************
 *			Si : structure vide ?				   *
 *			--> OUI : ne rien faire				   *
 *			--> NON : 1 -vider Structure			   *
 *				  2 -initialization			   *
 ***************************************************************************/

/******************************ATTENTION!!***********************************
 * Problème il faut revoir la définition de Structure Vide !!! IMPORTANT!!  *
 ****************************************************************************/

			if (!struct_empty(machine))
			{
				struct_clear(machine, file);
				initialization_struct(machine);
			}
			
			os_read(buffer, machine);
			up_read(buffer, machine);
			fw_read(buffer, machine);
			NAT_read(buffer, machine);
			//normalement struct remplie!!!
		}
		else if (machine->os_machine!=NULL)
		{
			distance_read (buffer, machine);
			link_read (buffer, machine);

		}


/*********************Explication Algorithmique*****************************
 *			Si : existance de l'OS name ?			   *
 *			--> NON : Ne rien faire				   *
 *			--> OUI : 1 -Chercher information		   *
 *				  2 -Remplire structure			   *
 ***************************************************************************/

//		struct_affiche(machine);
//		sleep(2);
	}while(!feof(stream_des));
	free(buffer);
	free(machine);
	fclose(file);
	fclose(stream_des);
	return 0;
}
